package model

import "time"

// StaffStatisticsReq 客服统计请求
type StaffStatisticsReq struct {
	StaffID   uint   `form:"staffId" binding:"required"`   // 客服ID
	StartDate string `form:"startDate" binding:"required"` // 开始日期 (YYYY-MM-DD)
	EndDate   string `form:"endDate" binding:"required"`   // 结束日期 (YYYY-MM-DD)
}

// StaffStatisticsResp 客服统计响应
type StaffStatisticsResp struct {
	StaffID            uint             `json:"staffId"`
	StaffName          string           `json:"staffName"`
	TotalSessions      int64            `json:"totalSessions"`      // 总会话数
	ActiveSessions     int64            `json:"activeSessions"`     // 进行中的会话数
	ClosedSessions     int64            `json:"closedSessions"`     // 已关闭的会话数
	AvgResponseTime    float64          `json:"avgResponseTime"`    // 平均响应时间（秒）
	AvgRating          float64          `json:"avgRating"`          // 平均评分
	TotalMessages      int64            `json:"totalMessages"`      // 总消息数
	AvgSessionDuration float64          `json:"avgSessionDuration"` // 平均会话时长（分钟）
	RatingDistribution map[string]int64 `json:"ratingDistribution"` // 评分分布
	SessionsPerDay     map[string]int64 `json:"sessionsPerDay"`     // 每日会话数
	DateRange          DateRange        `json:"dateRange"`          // 统计时间范围
}

// DateRange 日期范围
type DateRange struct {
	StartDate time.Time `json:"startDate"`
	EndDate   time.Time `json:"endDate"`
}

// SessionStatistics 会话统计原始数据
type SessionStatistics struct {
	TotalSessions      int64   `gorm:"column:total_sessions"`
	ActiveSessions     int64   `gorm:"column:active_sessions"`
	ClosedSessions     int64   `gorm:"column:closed_sessions"`
	AvgResponseTime    float64 `gorm:"column:avg_response_time"`
	AvgRating          float64 `gorm:"column:avg_rating"`
	AvgSessionDuration float64 `gorm:"column:avg_session_duration"`
}
